
// 设置填报科目公式的空间 
var design = {};
// 用于表示的公式字符串
design.showStr = new Array();
// 用于发送到后台去的字符串
design.sendStr = new Array();
// 记录上一个点击区域是那个，概算标准为A区,系统函数为B区,键盘区为C区
design.handle = '';
// 设置上一次的B区正在操作的函数
design.fun = '';
// 上一次是否操作成功 , 默认上一次操作都是成功的
design.lastOpt = true; 
// 操作概算标准，当前的操作区为A区
function standardCriterionTrDbclick( _tr ){
	
	btnEnable();
	var code = $( _tr ).attr('code');
	var name = $.trim($( _tr ).attr('name'));
	
	// 如果当前区域是B区，就提示请求去输入一个数据或符号
	if( design.handle == 'B' ){
		window.alert( '语法错误,请重新编辑公式!' );
		return;
	}
	// 如果是当前区为A区，就弹出上一个元素，再压入新元素 
	if( design.handle == 'A'){
		// 如果上一次压栈没有成功那就不进行弹栈操作
		if( design.showStr.indexOf( name ) != -1 ){
			window.alert( "此项已存在" );
			return;
		}
		if( design.lastOpt ){
  			design.showStr.pop( );
  			design.sendStr.pop( );
		}
		// 添加展示用的数组
		design.lastOpt = design.showStr.append( name );
		design.sendStr.append( name+'@@'+code+'##1' );
	// 如果当前区不是A区，就直接压入一个元素
	}else{
		design.lastOpt = design.showStr.append( name );
		design.sendStr.append( name+'@@'+code+'##1'  );
	}
	if( !design.lastOpt ){
		window.alert( "此项已存在" );
	}
	// 设置当前区
	design.handle = 'A';
	// 书写元素
	writeFormula();
}
// 操作填报科目，当前的操作区为B区
function itemDbClick( _tr ){
	btnEnable();
	var code = $( _tr ).attr('code');
	var name = $( _tr ).attr('name');
	// 如果当前区域是B区，就提示请求去输入一个数据或符号
	if( design.handle == 'A' ){
		window.alert( '语法错误,请重新编辑公式!' );
		return;
	}
	// 如果是当前区为A区，就弹出上一个元素，再压入新元素 
	if( design.handle == 'B'){
		// 如果上一次压栈没有成功那就不进行弹栈操作
		if( design.showStr.indexOf( name ) != -1 ){
			window.alert( "此项已存在" );
			return;
		}
		if( design.lastOpt ){
  			design.showStr.pop( );
  			design.sendStr.pop( );
		}
		// 添加展示用的数组
		design.lastOpt = design.showStr.append( name );
		design.sendStr.append( name+'@@'+code+'##2' );
	// 如果当前区不是A区，就直接压入一个元素
	}else{
		design.lastOpt = design.showStr.append( name );
		design.sendStr.append( name+'@@'+code+'##2'  );
	}
	if( !design.lastOpt ){
		window.alert( "此项已存在" );
	}
	// 设置当前区
	design.handle = 'B';
	// 书写元素
	writeFormula();
}

// 对于C区的操作没有逗号间隔，所有添加一个数组来记录C区的操作，最后以join('')的方法添加到总数组
// formula.strC = new Array();
// 对编辑公式的键盘进行事件绑定
// 此方法的操作区为C区
$( '.key' ).bind( 'click' , function(){
	btnEnable();
	// 如果上一个操作区还是C区，那么取出弹出最后的一个元素，合并到当前元素再压到数组中
	if( design.handle == 'C' ){
		// 弹出最近元素
		var elem = design.showStr.pop();
		var realElem = design.sendStr.pop( );
		design.lastOpt = design.showStr.append( elem + $( this ).val() );
		design.sendStr.append( realElem + $( this ).attr('desc') );
	}else{
  		// 此方法不进行同区单选判断
  		design.lastOpt = design.showStr.append( $( this ).val() );
  		design.sendStr.append( $( this ).attr('desc') );
	}
	if( !design.lastOpt ){
		window.alert( "此项已存在" );
	}
	// 设置当前区
	design.handle = 'C';
	writeFormula();
} );

//去除js的字符对象两边的空格
	String.method =('trim', function(){
	    return this.replace(/^\s+|\s+$/g, '');

	});
	
// 写公式
function writeFormula(){
	try {
		$( '#designFormulaTxt' ).text( design.showStr.join( ' ' ) );
		$( '#designFormulaTxtHidden' ).text( design.sendStr.join( ',' ) );
	}catch(e) {
		alert(e.name+" "+e.message);
	}	
}
// 清除内容
function clearFormula(){
	design.showStr = new Array();
	design.sendStr = new Array();
	design.handle = '';
	design.fun = '';
	design.lastOpt = true;
	writeFormula();
	btnEnable();
}

function btnEnable(){
	$( '#design_sendFormula' ).attr( 'disabled' , '' );
	$( '#design_sendFormula' ).removeClass( 'btn_disable' );
}